package com.benzhitech.config;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.yaml.snakeyaml.Yaml;

import java.io.InputStream;

/**
 * 加载 application.yaml 配置文件。
 */
public class ConfigLoader {

    private static final Logger log = LoggerFactory.getLogger(ConfigLoader.class);
    private static final String CONFIG_FILE = "/application.yaml";
    private static AppConfig appConfig;

    static {
        loadConfig();
    }

    private static void loadConfig() {
        Yaml yaml = new Yaml();
        try (InputStream in = ConfigLoader.class.getResourceAsStream(CONFIG_FILE)) {
            if (in == null) {
                log.error("配置文件未找到: {}", CONFIG_FILE);
                // 可以选择抛出异常或使用默认配置
                appConfig = new AppConfig(); // 使用默认配置
            } else {
                appConfig = yaml.loadAs(in, AppConfig.class);
                log.info("配置文件加载成功: {}", CONFIG_FILE);
            }
        } catch (Exception e) {
            log.error("加载配置文件失败: {}", CONFIG_FILE, e);
            // 处理加载异常，例如使用默认配置或终止程序
            appConfig = new AppConfig(); // 使用默认配置
        }
    }

    /**
     * 获取加载的配置实例。
     *
     * @return AppConfig 实例
     */
    public static AppConfig getConfig() {
        if (appConfig == null) {
            // 这种情况理论上不应该发生，因为静态块会先执行
            loadConfig();
        }
        return appConfig;
    }

    // 可选：提供刷新配置的方法
    public static void reloadConfig() {
        loadConfig();
    }
} 